home *** CD-ROM | disk | FTP | other *** search
Wrap
(*************************************************** Ant Movie Catalog importation script www.antp.be/software/moviecatalog/ [Infos] Authors=ScorEpioN Title=Nihon-fr.com Description=CinΘma Asiatique Site=http://www.nihon-fr.com Language=FR Version=01 du 07/03/2005 Requires=3.5.0 Comments= License=This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. | GetInfo=1 [Options] Type de Lancement=2|0|0=Demande le titre avant de lancer le script|1=Ne demande pas le titre avant de lancer le script|2=Cherche le meilleur rΘsultat sans confirmation Casse Choisie=3|3|0=Titre et Nom en minuscule|1=Titre et Nom en majuscule|2=PremiΦre lettre en majuscule|3=PremiΦre lettre de chaque mot en majuscule Recherche sur le titre=0|0|0=Traduit|1=Original Critique ComplΦte=1|1|0=Critique de la premiΦre page|1=Critique ComplΦte ***************************************************) program Nihon_FR; const Nihon = 'http://www.nihon-fr.com'; NihonSearch = 'http://www.nihon-fr.com/cinema/afficher?page=rechercher&tables%5Bfilms%5D=1&phrase='; NihonSubmit = '&submit=Chercher'; var MovieName, Address : string; i, premiereExecution: Integer; listeResultat: TStringList; //------------------------------------------------------------------------------ // VERIFIER LA VERSION DU SCRIPT //------------------------------------------------------------------------------ procedure verifVersion(); var Line, NewVersion : String; BeginPos, EndPos : Integer; begin Line := GetPage('http://forum.antp.be/phpbb2/viewtopic.php?t=1453'); BeginPos := pos('TELECHARGER LE SCRIPT NIHON-FR v', Line); delete(Line,1, BeginPos+32); EndPos := pos('du', Line); NewVersion := copy(Line, 1, EndPos - 2); if (ShowConfirmation('La derniΦre version est la '+NewVersion+'. Cliquer sur ''''OUI'''' pour la tΘlΘcharger.') = True) then begin Launch('iexplore.exe','http://www.ifrance.com/ricoland/Nihon%20(FR).ifs'); end else exit; end; //------------------------------------------------------------------------------ // MET LE TITRE AU BON FORMAT //------------------------------------------------------------------------------ function formatTitre(titre : String; option : Integer) : string; begin if (option = 0) then begin titre := AnsiLowerCase(titre); end else if (option = 1) then begin titre := AnsiUpperCase(titre); end else if (option = 2) then begin titre := AnsiUpFirstLetter(titre); end else if (option = 3) then begin titre := AnsiMixedCase(titre,' -'); end; result := titre; end; //------------------------------------------------------------------------------ // TROUVE LA CHAINE VOULUE //------------------------------------------------------------------------------ function findInfo(Debut, Fin, Line, Option : String) : string; var infos : String; BeginPos, EndPos : Integer; begin infos := ''; BeginPos := pos(Debut, Line); if BeginPos > 0 then begin delete(Line, 1, BeginPos+length(Debut)-1); EndPos := pos(Fin, Line); infos := copy(Line,0,EndPos-1); if option = '-1' then begin infos := StringReplace(infos, '<BR>', #13#10); infos := StringReplace(infos, '<br>', #13#10); infos := StringReplace(infos, '–', '-'); end; HTMLRemoveTags(infos); HTMLDecode(infos); if option = '0' then infos := StringReplace(infos, #13#10, ''); end; result := Trim(infos); end; //------------------------------------------------------------------------------ // STOCKE LA VALEUR DANS LE CHAMP SP╔CIFI╔ SI LA VALEUR EST NON NULLE //------------------------------------------------------------------------------ procedure MonSetField(field: Integer; value: string); begin if value <> '' then SetField(field,value); end; //------------------------------------------------------------------------------ // RECUPERE LES RESULTATS NIHON-FR.COM //------------------------------------------------------------------------------ procedure recherche(title : String); var adresseRecherche, Line, titre, adresse : String; StartPos, EndPos : Integer; begin adresseRecherche := NihonSearch+UrlEncode(title)+NihonSubmit; Line := GetPage(adresseRecherche); if pos('FILMS</td>', Line) > 0 then begin listeResultat := TStringList.Create; StartPos := pos('FILMS</td>', Line); delete(Line, 1, StartPos+length('FILMS</td>')-1); StartPos := pos('<a href="', Line); repeat delete(Line, 1, StartPos+length('<a href="')-1); adresse := Nihon+copy(Line, 0, pos('&highlight=', Line) - 1); delete(Line, 1, pos('">', Line)+1); titre := copy(Line, 0, pos('</a>', Line) - 1); HTMLRemoveTags(titre); //ajoute les films listeResultat.Add(titre+'|'+adresse); StartPos := pos('<a href="', Line); EndPos := pos('<td>RECHERCHER</td>', Line); until (StartPos > EndPos); afficheResultat(title); end else begin exit; end; end; //------------------------------------------------------------------------------ // CREATION DE LA LISTE DE RESULTAT //------------------------------------------------------------------------------ procedure afficheResultat(title : String); var StartPos: Integer; couple, titre, adresse : String; begin if (GetOption('Type de Lancement') = 0) or (GetOption('Type de Lancement') = 1) then begin PickTreeClear; PickTreeAdd('Films trouvΘs pour ' + title + ' :', ''); for i:=0 to listeResultat.Count-1 do begin couple := listeResultat.GetString(i); titre := copy(couple,0,pos('|',couple)-1); adresse := copy(couple,pos('|',couple)+1,length(couple)-1); PickTreeAdd(titre , adresse); end; PickTreeAdd(' ', ''); PickTreeAdd('Verifier si vous avez la derniΦre version', 'version'); PickTreeAdd('Pour me contacter', 'contact'); if listeResultat.Count = 1 then begin recupInfo(adresse); exit; end; begin if PickTreeExec(Address)=true then begin if (Address = 'version') then begin verifVersion(); end else if (Address = 'contact') then begin Launch('iexplore.exe','http://forum.antp.be/phpbb2/viewtopic.php?t=1453'); end else begin recupInfo(Address); end; end; end; end else if (GetOption('Type de Lancement') = 2) then begin if listeResultat.Count = 1 then begin couple := listeResultat.GetString(0); adresse := copy(couple,pos('|',couple)+1,length(couple)-1); recupInfo(adresse); exit; end else begin trouveTitle(title); end; end; end; //------------------------------------------------------------------------------ // RECUPERE LES INFOS //------------------------------------------------------------------------------ procedure recupInfo(Adresse : String); var Value, Value2, Line: String; StartPos: Integer; begin Line := GetPage(Adresse); // Jaquette DVD if CanSetPicture then GetPicture(Nihon+'/cinema/images/films/'+findInfo('/cinema/images/films/', '"', Line,'0')); // Titre Original if CanSetField(fieldOriginalTitle) then MonSetField(fieldOriginalTitle, formatTitre(findInfo('<b>Titre Original :</b>', '<br>', Line,'0'),GetOption('Casse Choisie'))); // Titre Traduit if CanSetField(fieldTranslatedTitle) then MonSetField(fieldTranslatedTitle, formatTitre(findInfo('<b>Titre Français :</b>', '<br>', Line,'0'),GetOption('Casse Choisie'))); // Genre if CanSetField(fieldCategory) then MonSetField(fieldCategory, formatTitre(findInfo('<b>Genre :</b>', '<br>', Line,'0'),GetOption('Casse Choisie'))); // DurΘe if CanSetField(fieldLength) then MonSetField(fieldLength, findInfo('<b>Durée :</b>', 'minutes<br>', Line,'0')); // AnnΘe if CanSetField(fieldYear) then MonSetField(fieldYear, findInfo('<b>Année :</b>', '<br>', Line,'0')); // Note Moyenne if CanSetField(fieldRating) then MonSetField(fieldRating, findInfo('<b>Note Moyenne :</b>', ' / 10', Line,'0')); // Acteurs if CanSetField(fieldActors) then MonSetField(fieldActors, formatTitre(findInfo('<b>Acteurs :</b>', '<br>', Line,'0'),GetOption('Casse Choisie'))); // RΘalisateur if CanSetField(fieldDirector) then MonSetField(fieldDirector, formatTitre(findInfo('<b>Réalisateurs :</b>', '<br>', Line,'0'),GetOption('Casse Choisie'))); // Producteur if CanSetField(fieldProducer) then MonSetField(fieldProducer, findInfo('<b>Producteur :</b>', '<br>', Line,'0')); // Pays if CanSetField(fieldCountry) then begin Value := findInfo('/cinema/interface/up_', '.jpg', Line,'0'); if Value = 'hongkong' then begin Value := formatTitre('Hong-Kong',GetOption('Casse Choisie')); end else if Value = 'chine' then begin Value := formatTitre('Chine',GetOption('Casse Choisie')); end else if Value = 'coree' then begin Value := formatTitre('CorΘe',GetOption('Casse Choisie')); end else if Value = 'japon' then begin Value := formatTitre('Japon',GetOption('Casse Choisie')); end else if Value = 'taiwan' then begin Value := formatTitre('Taiwan',GetOption('Casse Choisie')); end else if Value = 'thailande' then begin Value := formatTitre('Tha∩lande',GetOption('Casse Choisie')); end; MonSetField(fieldCountry, Value); end; // RΘsumΘ if CanSetField(fieldDescription) then begin Value := findInfo('<b>Résumé</b>', '</td></tr></table><br>', Line,'-1'); Value := copy(Value,0,pos('Le site officiel',Value)-1); if Value <> #13#10 then MonSetField(fieldDescription, 'RΘsumΘ :'+#13#10+Value); end; // Critique if CanSetField(fieldComments) then begin // Critique de la premiΦre page if (GetOption('Critique ComplΦte') = 0) then begin Value := findInfo('<td>CRITIQUE</td>', '</p></td></tr></table><br>', Line,'-1'); if Value <> '' then MonSetField(fieldComments, 'Critiques :'+#13#10+Value); end else if (GetOption('Critique ComplΦte') = 1) then begin if pos('bouton_suite.gif',Line) > 0 then begin Value := Nihon+'/cinema/'+findInfo('/cinema/', '/afficher', adresse,'0')+'/afficher/page-critiques/table-films/'+findInfo('/page-critiques/table-films/', '">', Line,'0'); Line := GetPage(Value); MonSetField(fieldComments, 'Critiques :'+#13#10#13#10+findInfo('<p class="texte" align="justify"><b>', '</b>', Line,'-1')); end else begin Value := findInfo('<td>CRITIQUE</td>', '</p></td></tr></table><br>', Line,'-1'); if Value <> '' then MonSetField(fieldComments, 'Critiques :'+#13#10+Value); end; end; end; // Adresse Web if CanSetField(fieldURL) then SetField(fieldURL, Adresse); end; //------------------------------------------------------------------------------ // SUPPRIME LES ACCENTS //------------------------------------------------------------------------------ function supprimeAccents(NomFilm : String) : String; var Articles: array of string; i: integer; begin // supprimer les articles SetArrayLength(Articles,8); Articles[0]:='le '; Articles[1]:='la '; Articles[2]:='l'''; Articles[3]:='l '; Articles[4]:='les '; Articles[5]:='des '; Articles[6]:='un '; Articles[7]:='une '; for i := 0 to GetArrayLength(articles)-1 do begin if Pos(Articles[i], NomFilm) = 1 then begin NomFilm := Copy(NomFilm, Length(Articles[i])+1, length(NomFilm)); Break; end; end; // les accents NomFilm := StringReplace(NomFilm, 'α', 'a'); NomFilm := StringReplace(NomFilm, 'ß', 'a'); NomFilm := StringReplace(NomFilm, 'Γ', 'a'); NomFilm := StringReplace(NomFilm, 'π', 'a'); NomFilm := StringReplace(NomFilm, 'Σ', 'a'); NomFilm := StringReplace(NomFilm, 'π', 'a'); NomFilm := StringReplace(NomFilm, 'Θ', 'e'); NomFilm := StringReplace(NomFilm, 'Φ', 'e'); NomFilm := StringReplace(NomFilm, 'δ', 'e'); NomFilm := StringReplace(NomFilm, 'Ω', 'e'); NomFilm := StringReplace(NomFilm, '∩', 'i'); NomFilm := StringReplace(NomFilm, 'ε', 'i'); NomFilm := StringReplace(NomFilm, '∞', 'i'); NomFilm := StringReplace(NomFilm, 'φ', 'i'); NomFilm := StringReplace(NomFilm, '⌠', 'o'); NomFilm := StringReplace(NomFilm, '÷', 'o'); NomFilm := StringReplace(NomFilm, '⌡', 'o'); NomFilm := StringReplace(NomFilm, '≥', 'o'); NomFilm := StringReplace(NomFilm, '≤', 'o'); NomFilm := StringReplace(NomFilm, 'ⁿ', 'u'); NomFilm := StringReplace(NomFilm, '√', 'u'); NomFilm := StringReplace(NomFilm, '·', 'u'); NomFilm := StringReplace(NomFilm, 'τ', 'c'); NomFilm := StringReplace(NomFilm, '±', 'n'); NomFilm := StringReplace(NomFilm, '⌠', 'o'); // Pour n'avoir que le titre delete(NomFilm, pos(' - ',NomFilm), length(NomFilm)); if (pos(', ',NomFilm) > 0) then delete(NomFilm, 1, pos(', ',NomFilm)+1); if (pos('(',NomFilm) > 0) then delete(NomFilm, pos('(',NomFilm), length(NomFilm)); if (pos(':',NomFilm) > 0) then delete(NomFilm, pos(':',NomFilm), length(NomFilm)); result := trim(NomFilm); end; //------------------------------------------------------------------------------ // VERIFIE LE RESULTAT AMAZON //------------------------------------------------------------------------------ function compareTitle(titleAllo, title : String) : String; begin title := supprimeAccents(trim(AnsiLowerCase(title))); titleAllo := supprimeAccents(trim(AnsiLowerCase(titleAllo))); if (title = titleAllo) then begin result := 'OK'; end else begin result := 'KO'; end; end; //------------------------------------------------------------------------------ // TROUVE LE BON TITRE SI LE PREMIER N'EST PAS LE BON //------------------------------------------------------------------------------ procedure trouveTitle(title : String); var oK, couple, titre, adresse : String; begin for i:=0 to listeResultat.Count-1 do begin couple := listeResultat.GetString(i); titre := copy(couple,0,pos('|',couple)-1); adresse := copy(couple,pos('|',couple)+1,length(couple)-1); oK := compareTitle(title,titre); if oK = 'OK' then begin recupInfo(adresse); exit; end; end; listeResultat.Free; end; //------------------------------------------------------------------------------ // NETTOIE LE TITRE DU FICHIER POUR AVOIR LE TITRE DE FILM //------------------------------------------------------------------------------ function cleanTitle(title : String) : string; var i,j, fin : Integer; temp : String; begin title := AnsiUpperCase(title); if title <> '' then begin // Nettoie les tags fichiers, merci Atmosfear pour les tags i:=pos('.DVD',title); if i <> 0 then begin title := copy(title,1,i-1); end; i:=pos('.DIVX',title); if i <> 0 then begin title := copy(title,1,i-1); end; i:=pos('.FREN',title); if i <> 0 then begin title := copy(title,1,i-1); end; i:=pos('.GERM',title); if i <> 0 then begin title := copy(title,1,i-1); end; i:=pos('.INT',title); if i <> 0 then begin title := copy(title,1,i-1); end; i:=pos('.LIM',title); if i <> 0 then begin title := copy(title,1,i-1); end; i:=pos('.PROP',title); if i <> 0 then begin title := copy(title,1,i-1); end; i:=pos('.REPACK',title); if i <> 0 then begin title := copy(title,1,i-1); end; i:=pos('.SUBB',title); if i <> 0 then begin title := copy(title,1,i-1); end; i:=pos('.UNSUB',title); if i <> 0 then begin title := copy(title,1,i-1); end; i:=pos('.WS',title); if i <> 0 then begin title := copy(title,1,i-1); end; i:=pos('.XVID',title); if i <> 0 then begin title := copy(title,1,i-1); end; i:=pos('.AC3',title); if i <> 0 then begin title := copy(title,1,i-1); end; i:=pos('.UNRAT',title); if i <> 0 then begin title := copy(title,1,i-1); end; title := StringReplace(title, '.', ' '); title := StringReplace(title, ',', ' '); title := StringReplace(title, ':', ''); title := StringReplace(title, '-', ''); title := StringReplace(title, ' ', ' '); i := 0; // Nettoie les tags de team if (pos('(',title) <> 0) then begin i := pos('(',title); temp := copy(title,0,i-1); j := pos(')',title); fin := Length(title); title := temp + copy(title,j+1,fin); end; if (pos('[',title) <> 0) then begin i := pos('[',title); temp := copy(title,1,i-1); j := pos(']',title); fin := Length(title); title := temp + copy(title,j+1,fin); end; title := AnsiLowerCase(title); title := AnsiUpFirstLetter(title); title := AnsiMixedCase(title,' -'); end; result := title; end; //------------------------------------------------------------------------------ // PROGRAMME PRINCIPAL //------------------------------------------------------------------------------ begin if CheckVersion(3,5,0) then begin if (GetOption('Recherche sur le titre') = 0) then begin MovieName := GetField(fieldTranslatedTitle); if MovieName = '' then MovieName := GetField(fieldOriginalTitle); end else if (GetOption('Recherche sur le titre') = 1) then begin MovieName := GetField(fieldOriginalTitle); if MovieName = '' then MovieName := GetField(fieldTranslatedTitle); end; MovieName := cleanTitle(MovieName); if (GetOption('Type de Lancement') = 0) then begin if Input('Nihon-fr by ScorEpioN', 'Entrez le titre du film :', MovieName) then begin if Pos('nihon-fr.com', MovieName) > 0 then begin recupInfo(MovieName); end else recherche(MovieName); end; end else begin if (premiereExecution = 0) then begin premiereExecution := -1; if (ShowConfirmation('Vous allez executer le script sans confirmation, cliquer sur ''''OUI'''' pour continuer') = True) then begin recherche(MovieName); end else exit; end else begin recherche(MovieName); end; end; end else ShowMessage('This script requires a newer version of Ant Movie Catalog (at least the version 3.5.0)'); end.